#ifndef UTILITIES_H
#define UTILITIES_H

#include <iostream>
#include <utility>
#include <vector>

#include <raylib.h>
#include <raymath.h>

void printVector3(Vector3 v, std::string s);

void printMatrix(Matrix m, std::string s);

struct Vector {
	float x;
	float y;
	float z;
	
	Vector CrossProduct(Vector v);
	float Length();
	Vector Normalize();
	Vector Subtract(Vector v);
	float Length(const Vector v);
	Vector Add(Vector v);
	Vector Scale(float scalar);

} ;

std::pair<Vector3, Vector3> getOtherTwoAxis(Vector3 axis);

std::vector<Vector3> getCirclePointsPos(Vector3 circlePos, Vector3 normal, float radius, uint16_t pointsCount);

std::vector<Vector3> getCirclePointsPos(Vector3 circlePos, Vector3 normalOne,  Vector3 normalTwo, float radius, uint16_t pointsCount);

#endif
